import java.io.File;
import java.io.IOException;
import java.util.Scanner;

// 案例1：实现查找文件并删除胡
public class TestDemo12 {
    public static void main(String[] args) {
        //1、先输入要扫描的目录，以及要删除的文件名
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要扫描的路径：");
        String rootDirectoryPath = sc.next();
        System.out.println("请输入要删除的文件名：");
        String DeleteFileName = sc.next();
        // 以 rootDirectoryPath 的路径，创建一个 File 对象
        File rootDirectory = new File(rootDirectoryPath);
        if(!rootDirectory.isDirectory()){
            //判断输入路径是否正确/存在
            //如果不存在，执行下面内容
            System.out.println("输入的扫描路径有误");
            return;
        }
        // 2、遍历目录，把指定目录中的所有文件 和 子目录 都遍历一遍，从而要找删除的文件。
        //通过scannerDirectory方法来实现递归遍历，并删除的功能
        scannerDirectory(rootDirectory,DeleteFileName);
    }
    private static void  scannerDirectory(File rootDirectory,String DeleteFileName){
        // 1、 先列出 rootDirectory 中都有哪些内容
        File[] files = rootDirectory.listFiles();
        if(files == null){
            // rootDirectory 是一个空目录，即 files 就是一个空数组
            return;
        }
        //2、遍历当前列出的这些内容，如果是普通文件
        // 检测文件名 是否是 要删除的文件。【不要求名字完全一样，只要文件名包含了关键字，即可删除】
        // 如果是目录，就递归的进行遍历
        for (File f:files) {
            //判断是否是普通文件
            if(f.isFile()){
                if(f.getName().contains(DeleteFileName)){
                    //进行删除操作
                    deleteFile(f);
                }// 判断是否是目录
            }else if(f.isDirectory()){
                // 目录 就递归的进行遍历
                scannerDirectory(f,DeleteFileName);
            }
        }
    }
    private static void deleteFile(File f){
        try {
            System.out.println(f.getCanonicalPath() + "确认要删除? (Yes Or No)");
            Scanner sc = new Scanner(System.in);
            String choice = sc.next();
            if(choice.equals("Yes") || choice.equals("No")){
                f.delete();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
